#include "StringUtils.h"
#include <QDebug>
#include <QRegularExpression>
#include <QUuid>


QString StringUtils::generateUniqueId() {
  // 使用QUuid生成唯一ID
  return QUuid::createUuid().toString();
}

bool StringUtils::isValidIdentifier(const QString &str) {
  if (str.isEmpty()) {
    return false;
  }

  // 检查是否符合标识符规则（字母、数字、下划线，不能以数字开头）
  QRegularExpression re("^[a-zA-Z_][a-zA-Z0-9_]*$");
  return re.match(str).hasMatch();
}

std::vector<QString> StringUtils::split(const QString &str, QChar delimiter) {
  QStringList list = str.split(delimiter);
  return std::vector<QString>(list.begin(), list.end());
}

QString StringUtils::join(const std::vector<QString> &vec,
                          const QString &delimiter) {
  QStringList list;
  for (const QString &s : vec) {
    list.append(s);
  }
  return list.join(delimiter);
}

QString StringUtils::toLower(const QString &str) { return str.toLower(); }

QString StringUtils::toUpper(const QString &str) { return str.toUpper(); }